#ifndef _SIMULATED_ANNEALING_H_
#define _SIMULATED_ANNEALING_H_
// ---- ---- 0w0 ---- ----

#include "pfs_item.h"
#include "pfs_calculator.h"

class SA_PFS : public PFS_Calculator {
public:
	explicit SA_PFS(const PFS_Item& pfs_item, double time_limit,
		double start_temp, double cool_rate, double end_temp, int iterate_len);
	Answer Calculate() override;

private:
	void SA_process(const double start_time);

	const double kStartTemp;
	const double kCoolRate;	
	const double kFinalTemperature;
	const int kIterateLength;
};

// ---- ---- >w< ---- ----
#endif  // _SIMULATED_ANNEALING_H_
